// 剩余参数

// 1. 如果我想求传递参数值之和，但是参数个数不确定的情况下如何实现呢？
// ps: 使用剩余参数

const sum = (...args) => {
  let total = 0;
  args.forEach(item => total += item)
  return total;
}

let num1 = sum(10, 20, 20);
let num2 = sum(10, 20, 20, 30);

console.log(num1);
console.log(num2);

// 2. 搭配数组解构使用
let ary1 = ['张三', '李四', '王五'];
// 这时的s2就变成了一个数组，同时存储了后两位数组元素的值
let [s1, ...s2] = ary1;

console.log(s1);
console.log(s2);

console.log("---------------------------华丽丽的的分割线---------------------------");

// 3. 扩展运算符
// 扩展运算符可以将数组或者对象转为用逗号分隔的参数序列
let ary2 = [1, 2, 3];
console.log(...ary2); // 1 2 3
// 拆分如下
// console.log(1, 2, 3); 

console.log("---------------------------华丽丽的的分割线---------------------------");

// 4. 扩展运算符可以应用于合并数组
// 方法一:
let arr1 = [1, 2, 3, 4];
let arr2 = [5, 6, 7, 8];
let arr3 = [...arr1, ...arr2];
console.log(arr3);

console.log("---------------------------华丽丽的的分割线---------------------------");

// 方法二:
arr1.push(...arr2);
console.log(arr1);